 
package com.hs.core.service;

import java.util.Collection;
import java.util.List;

import com.hs.core.dao.IDao;
import com.hs.core.model.BaseBean;
import com.hs.log.HsLogger;
 
public abstract  class BaseSevice implements IService {
	/**
	 * Log4J Logger for this class
	 */
	private static final HsLogger logger = HsLogger.getLogger(BaseSevice.class.getName());
	

	/**
	 * 
	 * 功能: 子类必须要提供一个返回具体Dao操作类实例的方法
	 * 作者: shaokun305
	 * 创建日期:2006-6-14
	 * @return
	 */
	public abstract IDao getBaseDao();


	public void saveObject(BaseBean baseBean) {
		getBaseDao().saveObject(baseBean);
	}

	/**
	 * 
	 * 功能:更新一个实例化对象
	 * 作者: shaokun305
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void update(BaseBean baseBean) {
		getBaseDao().update(baseBean);

	}
	
	
	/**
	 * 
	 * 功能:更新一个实例化对象
	 * 作者: shaokun305
	 * 创建日期:2006-6-13
	 * @param baseBean
	 */
	public void save(BaseBean baseBean) {
		getBaseDao().save(baseBean);

	}

	public void deleteObject(BaseBean baseBean) {
		getBaseDao().deleteObject(baseBean);
	}

	public void deleteList(Collection list) {
		getBaseDao().deleteList(list);
	}

	public Object findByID(Class entityClass, Long id) {
		return getBaseDao().findByID(entityClass,id);
	}
	
	public Object findByID(Class entityClass, String id) {
		return getBaseDao().findByID(entityClass,id);
	}
	
	/*
	 * （非 Javadoc）
	 * @see cn.com.sgcc.core.base.IService#findByExampleUnique(java.lang.Class, java.lang.Object)
	 */
	public Object findByExampleUnique(Class classObj,Object exampleObj){
	    return this.getBaseDao().findByExampleUnique(classObj, exampleObj);
	}
		

	/* （非 Javadoc）
	 * @see cn.com.sgcc.core.base.IService#findByExample(java.lang.Class, java.lang.Object)
	 */
	public List findByExample(Class classObj,Object exampleObj){
	    return this.getBaseDao().findByExample(classObj, exampleObj);
	}
	
	/*
	 * （非 Javadoc）
	 * @see cn.com.sgcc.core.base.IService#findList(java.lang.String, java.lang.Object)
	 */
	public List findList(String hql,Object param){
		return this.getBaseDao().findList(hql, param);
	}
	
	/**
	 * 通过任意一个BO属性获得记录
	 * 
	 * @param String
	 *            boname,BO的名字
	 * @param String
	 *            attributename,BO属性的名字
	 * @param Object
	 *            attributevalue,BO的属性的值
	 */
	public List findByAny(String boname, String attributename,
			Object attributevalue, String order, String group) {
		if (order == null)
			order = "";
		if (group == null)
			group = "";
		String hql = "from " + boname + " as fo where fo." + attributename
				+ "=" + attributevalue + order + group;
//		if (logger.isDebugEnabled()) {
//			logger.debug("sql:"+hql);
//		}

		return this.getBaseDao().findList(hql);
	}
	
	
	/**
	 * 
	 * 功能:保存一组映射对象
	 * 作者: shiliang
	 * 创建日期:2006-6-13
	 * @param list
	 */
	public void saveOrUpdateAll(Collection list)
	{
		this.getBaseDao().saveOrUpdateAll(list);
	}
	/**
	 * 
	 * 功能: 获得列表
	 * 作者: WXY
	 * 创建日期:2006-12-14
	 * @param hql
	 * @return
	 */
	public List findList(String hql){
		return this.getBaseDao().findList(hql);
	}
}
